package controle;

import java.util.ArrayList;
import java.util.List;

import DAO.IngressoDAO;
import DAO.DAOFactory;
import DAO.IngressoDAO;
import modelo.Ingresso;
import modelo.Evento;
import modelo.Ingresso;
/**
 * 
 * @author douglas_joaquim
 *
 *Controle ingresso implementa Ingresso
 */
public class ControleIngresso implements Controle<Ingresso> {
/**
 * Vai salvar os ingressos ou alterar
 */
	@Override
	public void salvar(Ingresso e) throws Exception {
		if (e.getEvento().getData().equals("")){
			throw new Exception("Evento deve estar completo");
		}
		if (e.getEvento().getEstadio().equals("")){
			throw new Exception("Evento deve estar completo");
		}
		if (e.getEvento().getHoras().equals("")){
			throw new Exception("Evento deve estar completo");
		}
		if (e.getEvento().getIdEvento()==0){
			throw new Exception("Evento deve estar completo");
		}
		if (e.getEvento().getPreco_geral()==0){
			throw new Exception("Evento deve estar completo");
		}
		if (e.getEvento().getTime_1().equals("")){
			throw new Exception("Evento deve estar completo");
		}
		if (e.getEvento().getTime_2().equals("")){
			throw new Exception("Evento deve estar completo");
		}
		if (e.getTipo()==0){
			throw new Exception("Tipo do ingresso e obrigatorio");
		}
		IngressoDAO ingressoDAO = DAOFactory.getIngressoDAO();
		if(e.getIdIngresso()==0)
		 ingressoDAO.salvar(e);
		
		else
			ingressoDAO.alterar(e);
	}

	
/**
 * Vai excluir os ingressos
 */
	@Override
	public void excluir(Ingresso e) {
		IngressoDAO ingressoDAO = DAOFactory.getIngressoDAO();
		ingressoDAO.deletar(e);
		
	}
/**
 * Busca e cria uma lista de ingressos por evento, id e ingressoVendido
 */
	@Override
	public List<Ingresso> buscar(Ingresso e) throws Exception {
		List<Ingresso> ingressos = new ArrayList<Ingresso>();
		IngressoDAO ingressoDAO = DAOFactory.getIngressoDAO();
		if((e.getEvento()!= null )){
			ingressos = ingressoDAO.buscaIngressoEvento(e);
		}else if((e.getTipo()==0)){
			ingressos = ingressoDAO.buscaIngressoPorId(e);
		}else if((e.getIdIngresso()!=0)){
			ingressos = ingressoDAO.buscaIngressoPorId(e);
		}else if((!e.isVendido())){
			ingressos = ingressoDAO.buscaIngressoVendido(e);
		}else {

			throw new Exception("Dados sao obrigatorio");
		}
		return ingressos;
	}
	/**
	 * Busca e cria uma lista de todos os ingressos
	 */
	@Override
	public List<Ingresso> buscarTodos() {
		List<Ingresso> ingressos = new ArrayList<Ingresso>();
		IngressoDAO ingressoDAO = DAOFactory.getIngressoDAO();
		ingressos = ingressoDAO.findAll();
		return ingressos;

	}
	/**
	 * 
	 * @param limite
	 * @return ingressos
	 */
	public List<Ingresso> buscarLimite(int limite) {
		List<Ingresso> ingressos = new ArrayList<Ingresso>();
		IngressoDAO ingressoDAO = DAOFactory.getIngressoDAO();
		ingressos = ingressoDAO.buscaIngressoUltimos(limite);
		return ingressos;

	}

}
